from flask import Blueprint,request
from flask import jsonify
from mysql import pool
import traceback
import json

user_admin = Blueprint('user_admin',__name__,url_prefix='/user_admin' )

@user_admin.route('/')
def add_sql():
    conn = pool.connection()
    # 创建游标
    cursor = conn.cursor()
    # 查询数据库
    sql = "写关于读取json文件的数据sql"
    # 执行sql
    cursor.execute(sql)


# 登录接口
@user_admin.route('/login',methods=['POST'])
def login():
    # 获取前端传来的数据
    # print(request.json)
    username = request.json.get('account')
    password = request.json.get('password')
    # 连接数据库
    conn = pool.connection()
    # 创建游标
    cursor = conn.cursor()
    # 查询数据库
    sql = "select id,username,enabled from user where username=%s and password=%s"
    # 执行sql
    cursor.execute(sql,(username,password))
    # 获取查询结果
    # fetchone 获取结果中的第一条数据,返回值为元组
    # fetchall 获取结果中的所有数据,返回值为元组套元组
    result = cursor.fetchone()
    
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    # 判断用户名和密码是否正确
    if result:
        return jsonify({
            'code':200,
            'msg':'ok',
            'data':{
                'id':result[0],
                'username':result[1],
                'token':f'{result[0]}123123'
            }
            })
    else:
        return jsonify({'code':400,'msg':'用户名或密码错误'})

# 获取用户信息接口


@user_admin.route('/getUserInfo',methods=['GET'])
def getUserInfo():
    
    # 获取前端传来的数据 用户id
    user_id = int(request.args.get('uid'))
    # 连接数据库
    conn = pool.connection()
    # 创建游标
    cursor = conn.cursor()
    # 查询数据库
    sql = "select roles from user_info where uid=%s"
    # 执行sql
    cursor.execute(sql,(user_id,))
    # 获取查询结果
    # fetchone 获取结果中的第一条数据,返回值为元组
    # fetchall 获取结果中的所有数据,返回值为元组套元组
    # 如果没有查询到数据,fetchone返回None
    result = cursor.fetchone()
    # 转换json
    result_rolus = json.loads(result[0])
    # 关闭游标
    cursor.close()
    return jsonify({
            'code':200,
            "data":result_rolus,
            'msg':'ok'
        })
    
# 获取角色菜单树接口
@user_admin.route('/getRoleMenuTree',methods=['GET'])
def getRoleMenuTree():
    # 获取前端传来的数据 用户id
    user_id = int(request.args.get('uid'))
    # 连接数据库
    conn = pool.connection()
    # 创建游标
    cursor = conn.cursor()
    # 查询数据库
    sql = "select menuList from role where id=%s"
    # 执行sql
    cursor.execute(sql,(user_id,))
    # 获取查询结果
    # fetchone 获取结果中的第一条数据,返回值为元组
    # fetchall 获取结果中的所有数据,返回值为元组套元组
    # 如果没有查询到数据,fetchone返回None
    result = cursor.fetchone()
    # 转换json
    result_menuList = json.loads(result[0])
    # 关闭游标
    cursor.close()
    return jsonify({
            'code':200,
            "data":result_menuList,
            'msg':'ok'
    })
    

